package wrapper;

public class IntergerDemo {
    public static void main(String[] args) {
        //包装类的定义：
        /*
        Integer i1 = new Integer(5);
        Integer i2 = new Integer(5);
        System.out.println(i1==i2);//false,==比较的是地址
        System.out.println(i1.equals(i2));//true,包装类重写equals()比较值了

        //valueof()方法复用1个字节（-128打127）范围内的数据，建议使用valueOf()
        Integer i3 = Integer.valueOf(5);
        Integer i4 = Integer.valueOf(5);
        System.out.println(i3==i4);//true
        System.out.println(i3.equals(i4));//true,包装类重写equals()比较值了
         */

        //基本类型与包装类型之间互转：
        /*
        Integer i = Integer.valueOf(5);//基本类型转换为包装类型
        int j = i.intValue();//包装类型转换为基本类型
         */

        //演示自动拆装箱:
        /*
        //触发了自动装箱特性，会被编译为：Integer m = Integer.valueOf(5);
        Integer m = 5;//基本类型到引用类型-------装
        //触发了自动拆箱特性，会被编译为：int n=m.intValue();
        int n = m;//引用类型到基本类型-----------拆
         */

        //演示包装类的常用操作：
        //1)可以通过包装类来获取基本类型的取值范围：
        /*
        int max = Integer.MAX_VALUE;//获取int的最大值
        int min = Integer.MIN_VALUE;//获取int的最小值
        System.out.println("int的最大值为" + max + ",最小值为：" + min);

        long max1 = Long.MAX_VALUE;
        long min1 = Long.MIN_VALUE;
        System.out.println("long的最大值为：" + max1 + ",最小值为：" + min1);

        byte max2 = Byte.MAX_VALUE;
        byte min2 = Byte.MIN_VALUE;
        System.out.println("byte的最大值："+max2+",最小值："+min2);
         */

        //2)通过包装类可以将字符串转换为对应的基本类型
        String s1 = "40";
        int age = Integer.parseInt(s1);//将字符串s1转换为int类型并赋值给age
        System.out.println(age);//40

        String s2 = "123.456";
        double price = Double.parseDouble(s2);
        System.out.println(price);//123.456

        Integer a = 100;//Integer a = Integer.valueOf(100);
        Integer b = 200;//Integer b = Integer.valueOf(200);
        Integer c = a+b;//Integer c = Integer.valueOf(a.intValue()+b.intValue());
        int d = c;      //int d = c.intValue();
    }
}
